package br.edu.unilasalle.simon_api.dao.impl;

import java.util.List;

import javax.persistence.TypedQuery;

import org.springframework.stereotype.Repository;

import br.edu.unilasalle.simon_api.dao.IProdutoDao;
import br.edu.unilasalle.simon_api.domain.Produto;

@Repository
public class ProdutoDao extends GenericDao<Produto, Long> implements IProdutoDao {
	
	public List<Produto> findAllProduto() {
        StringBuilder str = new StringBuilder();
        str.append("select new Produto(o.id, o.referencia, o.descricao, o.preco2, o.quantidade, o.ativo) from Produto o ");
        str.append("order by o.referencia, o.descricao");
        TypedQuery<Produto> q = entityManager.createQuery(str.toString(), Produto.class);
		return q.getResultList();
    }
	
	public List<Produto> findAllByRefOrDesc(String param) {
        StringBuilder str = new StringBuilder();
        str.append("select new Produto(o.id, o.referencia, o.descricao, o.preco2, o.quantidade, o.ativo) from Produto o ");
        str.append("where (upper(o.referencia) like :param or upper(o.descricao) like :param) ");
        str.append("order by o.referencia, o.descricao");
        TypedQuery<Produto> q = entityManager.createQuery(str.toString(), Produto.class);
        q.setParameter("param", param.toUpperCase()+"%");
		return q.getResultList();
    }
	
}
